#include <stdio.h>
/*1、顺序查找：在顺序表array[0..n-1]中查找关键字为k的记录，无论查找成功或失败，
均通过修改seek_seq参数来返回依次查找的记录位置的序列，seek_seq数组已包含的元素个数等于n；
查找成功时返回0，失败时返回-1。函数签名如下：*/
int seq_search(int array[],int n,int k, int seek_seq[]){
	int i;
	for(i=0;i<n;i++){
		if(array[i]==k){
			seek_seq[i]=i;
				return 0;
		}else seek_seq[i]=i;
	}
	return -1;
};

/*2、二分查找：在按照递增顺序排列的有序表array[0..n-1]中进行二分查找，
查找成功时返回0，失败时返回-1；
无论查找成功或失败，均通过修改seek_seq参数来返回依次查找的记录位置的序列，
seek_seq元素已包含的元素个数等于n。函数签名如下：*/
int bin_search(int array[],int n,int k, int seek_seq[]){
	int i,low,mid,high;
	i=0;
	low=0;
	high=n-1;
	if(low>high){
		return -1;
	}
    while (low<=high){
        mid = (low + high)/2;
		
        if(k<array[mid]){
            high = mid - 1;
            seek_seq[i] = mid;
        } else if(k>array[mid]){
            low = mid + 1;
            seek_seq[i] = mid;
        } else{
            seek_seq[i] = mid;
            return 0;
        }
        i++;
    }
};

// void main() {
//     int array[10] = {0,1,2,3,4,5,6,7,8,9};
//     int seek_seq[10];
//     int i,j;
//     for(j = 0;j<10;j++){
//         seek_seq[j] = -1;
//     }
//     seq_search(array,10,5,seek_seq);
//     printf("5的索引值为：");
//     for(i = 0;i<10;i++){
//         if(seek_seq[i] < 0)
//             break;
//         printf("%d\t",seek_seq[i]);
//     }

//     for(j = 0;j<10;j++){
//         seek_seq[j] = -1;
//     }
//     bin_search(array,10,2,seek_seq);
//     printf("\n2的索引值为：");
//     for(i = 0;i<10;i++){
//         if(seek_seq[i] < 0)
//             break;
//         printf("%d\t",seek_seq[i]);
//     }
// }